package main

// 导入gin 框架
import (
	"go-mall/api/router"
	"go-mall/common/enum"
	"go-mall/config"

	"github.com/gin-gonic/gin"
)

func main() {
	if config.App.Env == enum.ModeProd {
		gin.SetMode(gin.ReleaseMode)
	}
	g := gin.New()
	router.RegisterRoutes(g)
	// g.Use(gin.Logger(), gin.Recovery())
	// g.Use(gin.Logger(), middleware.StartTrace())
	// g.Use(middleware.StartTrace(),
	// 	middleware.LogAccess(),
	// 	middleware.GinPanicRecovery(),
	// )
	// g.GET("/ping", func(ctx *gin.Context) {
	// 	ctx.JSON(http.StatusOK, gin.H{
	// 		"message": "pong",
	// 	})
	// })

	// g.GET("/config-read", func(ctx *gin.Context) {
	// 	database := config.Database
	// 	ctx.JSON(http.StatusOK, gin.H{
	// 		"type":     database.Type,
	// 		"max_life": database.MaxLifeTime,
	// 	})
	// })
	// g.GET("/logger-test", func(ctx *gin.Context) {
	// 	logger.New(ctx).Info("logger test", "test", "val1", "val1")
	// 	ctx.JSON(http.StatusOK, gin.H{
	// 		"status": "ok",
	// 	})
	// })
	// g.POST("/access-log-test", func(ctx *gin.Context) {
	// 	ctx.JSON(http.StatusOK, gin.H{
	// 		"status": "ok",
	// 	})
	// })

	// g.GET("/panic-log-test", func(ctx *gin.Context) {
	// 	var a map[string]interface{}
	// 	a["k"] = "v"
	// 	ctx.JSON(http.StatusOK, gin.H{
	// 		"status": "ok",
	// 		"data":   a,
	// 	})
	// })

	// g.GET("/customized-error-test", func(ctx *gin.Context) {
	// 	err := errors.New("a dao error")
	// 	appErr := errcode.Wrap("包装错误", err)
	// 	bAppErr := errcode.Wrap("再次包装错误", appErr)
	// 	logger.New(ctx).Error("记录错误", "err", bAppErr)

	// 	err = errors.New("a domain error")
	// 	apiErr := errcode.ErrServer.WithCause(err)
	// 	logger.New(ctx).Error("API错误", "err", apiErr)

	// 	ctx.JSON(apiErr.HttpStatusCode(), gin.H{
	// 		"code": apiErr.Code(),
	// 		"msg":  apiErr.Msg(),
	// 	})
	// })

	// g.GET("/response-obj", func(ctx *gin.Context) {
	// 	data := map[string]int{
	// 		"a": 1,
	// 		"b": 2,
	// 	}
	// 	app.NewResponse(ctx).Success(data)
	// })

	// g.GET("/response-list", func(ctx *gin.Context) {
	// 	pagination := app.NewPagination(ctx)
	// 	data := []struct {
	// 		Name string `json:"name"`
	// 		Age  int    `json:"age"`
	// 	}{
	// 		{
	// 			Name: "Lily",
	// 			Age:  26,
	// 		},
	// 		{
	// 			Name: "Violet",
	// 			Age:  25,
	// 		},
	// 	}

	// 	pagination.SetTotalRows(2)
	// 	app.NewResponse(ctx).SetPagination(pagination).Success(data)
	// })

	// g.GET("/response-error", func(ctx *gin.Context) {
	// 	baseErr := errors.New("a dao error")
	// 	err := errcode.Wrap("encountered an error when xxx service did xxx", baseErr)
	// 	app.NewResponse(ctx).Error(errcode.ErrServer.WithCause(err))
	// })

	g.Run(":80")
	// r := gin.Default()
	// r.GET("/ping", func(ctx *gin.Context) {
	// 	ctx.JSON(http.StatusOK, gin.H{
	// 		"message": "pong",
	// 	})
	// })
	// // 启动指定端口

	// r.Run(":80")
}
